package com.cartoonist.system.exception;

import com.cartoonist.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Author 林瑶
 * @Description TODO
 * @Date 2023/4/30 10:23
 */
/*Controller增强类，在Controller层的基础上增加功能*/
@ControllerAdvice
public class GlobalExceptionHandler {
    /*全局异常处理*/
    @ExceptionHandler(Exception.class)
    /*响应的数据是json格式类型
    (一开始写成了RequestBody报错，因为这是控制器增强类，不能发Request请求，
    是用来处理接收到的Response的类)*/
    @ResponseBody
    public Result error(Exception e){
        e.printStackTrace();/*打印异常追踪信息*/
        return Result.fail().message("执行全局异常处理");
    }

    /*2 特定异常*/
    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public Result error(ArithmeticException e){
        e.printStackTrace();/*打印异常追踪信息*/
        return Result.fail().message("数学类异常");
    }

    /*3 自定义异常处理*/
    @ExceptionHandler(CartoonistException.class)
    @ResponseBody
    public Result error(CartoonistException e){
        e.printStackTrace();
        return Result.fail().message(e.getCode()+","+e.getMsg());
    }
}
